home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-9.10-netbook-remix-PL.iso / casper / filesystem.squashfs / usr / share / pyshared / coherence / log.py < prev    next >
Text File  |  2009-05-12  |  3KB  |  98 lines

  1. # Licensed under the MIT license
  2. # http://opensource.org/licenses/mit-license.php
  3.  
  4. # Copyright 2007, Philippe Normand <philippe@fluendo.com>
  5.  
  6. from coherence.extern.log import log as externlog
  7. from coherence.extern.log.log import *
  8. import os
  9.  
  10. def human2level(levelname):
  11.     levelname = levelname.lower()
  12.     if levelname.startswith('none'):
  13.         return 0
  14.     if levelname.startswith('error'):
  15.         return 1
  16.     if levelname.startswith('warn'):
  17.         return 2
  18.     if levelname.startswith('info'):
  19.         return 3
  20.     if levelname.startswith('debug'):
  21.         return 4
  22.     return 5
  23.  
  24. def customStderrHandler(level, object, category, file, line, message):
  25.     """
  26.     A log handler that writes to stderr.
  27.  
  28.     @type level:    string
  29.     @type object:   string (or None)
  30.     @type category: string
  31.     @type message:  string
  32.     """
  33.     if not isinstance(message, basestring):
  34.         message = str(message)
  35.  
  36.     if isinstance(message, unicode):
  37.         message = message.encode('utf-8')
  38.  
  39.     message = "".join(message.splitlines())
  40.     where = "(%s:%d)" % (file, line)
  41.  
  42.     formatted_level = getFormattedLevelName(level)
  43.     formatted_time = time.strftime("%b %d %H:%M:%S")
  44.     formatted = '%s %-27s %-15s ' % (formatted_level, category,
  45.                                      formatted_time)
  46.  
  47.     safeprintf(sys.stderr, formatted)
  48.     safeprintf(sys.stderr, ' %s %s\n', message, where)
  49.  
  50.     sys.stderr.flush()
  51.  
  52. def init(logfile=None,loglevel='*:2'):
  53.     externlog.init('COHERENCE_DEBUG', True)
  54.     externlog.setPackageScrubList('coherence', 'twisted')
  55.  
  56.     if logfile is not None:
  57.         outputToFiles(stdout=None, stderr=logfile)
  58.  
  59.     # log WARNINGS by default
  60.     if not os.getenv('COHERENCE_DEBUG'):
  61.         if loglevel.lower() != 'none':
  62.             setDebug(loglevel)
  63.  
  64.     if externlog.stderrHandler in externlog._log_handlers_limited:
  65.         externlog.removeLimitedLogHandler(externlog.stderrHandler)
  66.         if os.getenv('COHERENCE_DEBUG') or loglevel.lower() != 'none':
  67.             "print addLimitedLogHandler(customStderrHandler)"
  68.             externlog.addLimitedLogHandler(customStderrHandler)
  69.  
  70. def set_debug(loglevel):
  71.     setDebug(loglevel)
  72.  
  73. def show_levels():
  74.     print externlog._categories
  75.  
  76. # Make Loggable a new-style object
  77. class Loggable(externlog.Loggable, object):
  78.  
  79.     def logFunction(self, *args):
  80.         if len(args) > 1:
  81.             format = args[0]
  82.             arguments = args[1:]
  83.             try:
  84.                 format % arguments
  85.             except TypeError:
  86.                 format += " ".join(["%r" for i in arguments])
  87.             args = (format,) + arguments
  88.         return args
  89.  
  90.     def critical(self, msg, *args):
  91.         self.warning(msg, *args)
  92.  
  93.     #def error(self, msg, *args):
  94.     #    self.log(msg, *args)
  95.  
  96.     def msg(self, message, *args):
  97.         self.info(message, *args)
  98.